import Vue from 'vue'
import App from './App.vue'
import mitt from 'mitt'

// 事件总线 / EventBus / 发布订阅模式 => 任意组件间的通信（和框架无关）

// !#1 往 Vue.prototype 上面挂载的任何东西，组件都可以通过 this 访问到
Vue.prototype.$bus = mitt()

Vue.config.productionTip = false

// Vue3 刪除了 EventBus，你觉得为什么？
// 1. 它过于灵活，可以任意一个地方触发和监听，一旦发生错误也就意味着可能是任意一个地方产生的，不太方便追溯；
// 2. Vue3 作者出于自身体积更小的原因；
// 3. EventBus 实现起来并不难，就是一个发布订阅模式，不超过 3 行代码；
// Vue3 删了，如果还想用，你该怎么办呢？
// https://v3-migration.vuejs.org/breaking-changes/events-api.html#event-bus
// 作者推荐的有包：mitt or tiny-emitter
// 你自己可以实现一个吗？

new Vue({
  render: h => h(App),
}).$mount('#app')
